package com.dd.cloud.user.service.doctor;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dd.cloud.common.vo.PageVo;
import com.dd.cloud.user.entity.doctor.BindReviewPresDoctor;
import com.dd.cloud.user.req.doctor.*;
import com.dd.cloud.user.res.doctor.BindReviewPresDoctorApplyPageRes;
import com.dd.cloud.user.res.doctor.BindReviewPresDoctorListRes;
import com.dd.cloud.user.res.doctor.BindReviewPresPageRes;

import java.util.List;

/**
 * @author Lx
 * @version 1.0
 */
public interface IBindReviewPresDoctorService extends IService<BindReviewPresDoctor> {
    /**
     * 申请签约审核医生
     *
     * @param req
     */
    void applyBindReviewPresDoctor(BindReviewPresDoctorCreateReq req);

    /**
     * 无处方权医生 解约审核医生
     *
     * @param req
     */
    void rescindBindReviewPresDoctor(BindReviewPresDoctorRescindReq req);

    /**
     * 无处方权医生 查询处方审核医生列表
     *
     * @return
     */
    List<BindReviewPresDoctorListRes> queryBindReviewPresDoctorList();

    /**
     * 无处方权医生 查询可正常审方医生数量 用于开方判断是否能继续开方
     *
     * @param docId
     * @return
     */
    Integer queryBindReviewPresDoctorNormalCount(Integer docId);

    /**
     * 查询审核处方单列表
     *
     * @param req
     * @return
     */
    PageVo<BindReviewPresPageRes> queryBindReviewPresPage(BindReviewPresPageReq req);

    /**
     * 查询审核处方数量
     *
     * @param req
     * @return
     */
    BindReviewPresPageRes.BindReviewPresExtendRes queryBindReviewPresExtend(BindReviewPresPageReq req);

    /**
     * 有处方权医生 查询无处方权医生申请记录
     *
     * @param req
     * @return
     */
    PageVo<BindReviewPresDoctorApplyPageRes> queryBindReviewPresDoctorApplyPage(BindReviewPresDoctorApplyPageReq req);

    /**
     * 有处方权医生审核无处方权医生申请记录
     *
     * @param req
     */
    void bindReviewPresDoctorReview(BindReviewPresDoctorReviewReq req);

    /**
     * 有处方权医生 查询无处方权医生待审核数量
     *
     * @return
     */
    Integer queryBindReviewPresDoctorApplyNoReviewCount();

    /**
     * 获取审核医生id
     *
     * @param docId
     * @return 下标[0]处方权 下标[1]正常返回审核医生id 错误返回-1
     */
    Integer[] queryReviewDoctorId(Integer docId);

    /**
     * 查询审方医生id
     * @return
     */
    Integer queryReviewDoctorRes();
}
